home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / os2 / octa209b.zip / octave-2.09 / SCRIPTS.ZIP / scripts / general / linspace.m < prev    next >
Text File  |  1997-03-07  |  2KB  |  61 lines

  1. ## Copyright (C) 1993, 1994, 1995 John W. Eaton
  2. ## 
  3. ## This file is part of Octave.
  4. ## 
  5. ## Octave is free software; you can redistribute it and/or modify it
  6. ## under the terms of the GNU General Public License as published by the
  7. ## Free Software Foundation; either version 2, or (at your option) any
  8. ## later version.
  9. ## 
  10. ## Octave is distributed in the hope that it will be useful, but WITHOUT
  11. ## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  12. ## FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  13. ## for more details.
  14. ## 
  15. ## You should have received a copy of the GNU General Public License
  16. ## along with Octave; see the file COPYING.  If not, write to the Free
  17. ## Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  18.  
  19. ## usage: linspace (x1, x2, n)
  20. ##
  21. ## Return a vector of n equally spaced points between x1 and x2
  22. ## inclusive. 
  23. ##
  24. ## If the final argument is omitted, n = 100 is assumed.
  25. ##
  26. ## All three arguments must be scalars.
  27. ##
  28. ## See also: logspace
  29.  
  30. ## Author: jwe
  31.  
  32. function retval = linspace (x1, x2, n)
  33.  
  34.   if (nargin == 2)
  35.     npoints = 100;
  36.   elseif (nargin == 3)
  37.     if (length (n) == 1)
  38.       npoints = fix (n);
  39.     else
  40.       error ("linspace: arguments must be scalars");
  41.     endif
  42.   else
  43.     usage ("linspace (x1, x2 [, n])");
  44.   endif
  45.  
  46.   if (npoints < 2)
  47.     error ("linspace: npoints must be greater than 2");
  48.   endif
  49.  
  50.   ## In some cases x1 + delta * (npoints - 1) will not be equal to x2,
  51.   ## so we cheat and force the last value to be x2.
  52.  
  53.   if (length (x1) == 1 && length (x2) == 1)
  54.     delta = (x2 - x1) / (npoints - 1);
  55.     retval = [x1+(0:npoints-2)*delta, x2];
  56.   else
  57.     error ("linspace: arguments must be scalars");
  58.   endif
  59.  
  60. endfunction
  61.